<?php
require '../core/debug.php';
require_once 'constants.php';
require_once 'model.php';
require_once 'view.php';
require_once '../core/app_global_metods.php';
require_once '../departamento/model.php';
require_once '../adquisicion/model.php';
require_once '../tipoarticulo/model.php';
require_once '../personal/model.php';
require_once '../proveedor/model.php';

function handler(){
    #define evento default
    $event=VIEW_LIST_ARTICULO;
    #obtiene la url de la solicitud
    $uri=$_SERVER['REQUEST_URI'];
    #guarda en un array las posibles peticiones q debera manejar el handler
    $peticiones=  array(GET_ARTICULO,SET_ARTICULO,DELETE_ARTICULO,EDIT_ARTICULO,SEARCH_ARTICULO,LIST_COMPONENT,LIST_ARTICULO,ADD_COMPONENT,
                        VIEW_GET_ARTICULO,VIEW_SET_ARTICULO,VIEW_DELETE_ARTICULO,VIEW_EDIT_ARTICULO,VIEW_SEARCH_ARTICULO,VIEW_LIST_ARTICULO,VIEW_LIST_COMPONENT,VIEW_RESG_ARTICULO);
    #evalua la peticion recibida
    foreach ($peticiones as $peticion){
        #crea la url de la peticion 
        $uri_peticion=MODULO.$peticion;
        #busca la uri generada en la uri del servidor
        if(strpos($uri,$uri_peticion)!==false){
            $event=$peticion;
        }
    }
    
    #llama a helper_user_data que obtiene los datos existentes del usuario y
    # los coloca en un array
    $submit_data=helper_articulo_data();
    #inicializa el objeto usuario
    $articulo=set_obj();
    switch ($event) {
        case LIST_ARTICULO: //enlist
            LISTAR_ARTICULO:
            if(start_session())
            { 
                $data_articulos=$articulo->getarticulos();
                $data=array('resultset'=>$data_articulos,
                                 'data'=>array('mensaje'=>'Bienvenido'));
                             return_view(VIEW_LIST_ARTICULO,$data);//listar
            }
            else{
                header('Location: /STControlEquipo/usuario/log/?logout=logout');
            }
        break;
        case VIEW_LIST_ARTICULO://listar
            goto LISTAR_ARTICULO;
            break;
        case GET_ARTICULO:
            if(start_session()){
                if(isset($submit_data['submit_editar'])){
                    goto TAG_VIEW_EDIT_ARTICULO;
                }
                if(isset($submit_data['submit_reporte'])){
                    $articulo->getwithtext($submit_data['nIdArticulo']);
                    $data=array('nIdArticulo'=>$articulo->nIdArticulo,
                                    'val_dfecha'=>$articulo->dFecha,
                                    'val_sidcontabilidad'=>$articulo->sIdContabilidad,
                                    'val_sidcontraloria'=>$articulo->sIdContraloria,
                                    'val_snumeroserie'=>$articulo->sNumeroSerie,
                                    'val_sdescripcion'=>$articulo->sDescripcion,
                                    'val_smarca'=>$articulo->sMarca,
                                    'val_smodelo'=>$articulo->sModelo,
                                    'val_sobservaciones'=>$articulo->sObservaciones,
                                    'val_sestado'=>$articulo->sEstado,
                                    'bActivo'=>$articulo->bActivo,
                                    'bComponente'=>$articulo->bComponente,
                                    'dFechaBaja'=>$articulo->dFechaBaja,
                                    'val_smodoadquisicion'=>$articulo->sModoAdquisicion,
                                    'val_dfechaadquisicion'=>$articulo->dFechaAdquisicion,
                                    'val_stipoarticulo'=>$articulo->sTipoArticulo,
                                    'val_spersonal'=>$articulo->sPersonal,
                                    'val_sdepartamento'=>$articulo->sDepartamento,
                                    'val_sproveedor'=>$articulo->sProveedor,
                                    'val_sfactura'=>$articulo->sFactura,
                                    'val_ntotalfactura'=>$articulo->nTotalFactura,
                                    'val_ncostounitario'=>$articulo->nCostoUnitario,
                                    'val_scodebar'=>$articulo->sCodebar,
                                    'sImages'=>$articulo->simages
                        );
                    return_view(VIEW_RESG_ARTICULO,$data);
                }
                if(isset($submit_data['submit_agregar'])){
                    TAG_GET_ARTICULO_ADD:
                    $articulo->get($submit_data['nIdArticulo']);
                    $asociados=$articulo->getasoccomponents($submit_data['nIdArticulo']);
                    $disponibles=$articulo->getcomponents();
                    $data=array('resultset'=>array('resultset'=>$disponibles,'resultset1'=>$asociados),
                                'data'=>array('mensaje'=>'Bienvenido',
                                              'nIdArticulo'=>$articulo->nIdArticulo,
                                              'sDescripcion'=>$articulo->sDescripcion));
                    return_view(VIEW_ADD_COMPONENT,$data);
                }
            }
        break;
        case VIEW_SET_ARTICULO:
            if(start_session())
            { 
                $data=array('mensaje'=>'Rellene los campos');
                $controls= fill_controls();
                return_view(VIEW_SET_ARTICULO,$data,$controls);//agregar
            }
            else{
                header('Location: /STControlEquipo/usuario/log/?logout=logout');
            }
            break;
        case SET_ARTICULO:
            if(start_session())
            { 
                /*si la insercin es correcta*/
                if($articulo->set($submit_data)){
                    if(!$articulo->bComponente===1){
                        debug("es componente");
                    }
                    else{
                        $data=array('nIdArticulo'=>$articulo->nIdArticulo,
                                    'val_sidcontabilidad'=>$articulo->sIdContabilidad,
                                    'val_sidcontraloria'=>$articulo->sIdContraloria,
                                    'val_snumeroserie'=>$articulo->sNumeroSerie,
                                    'val_sdescripcion'=>$articulo->sDescripcion,
                                    'val_smarca'=>$articulo->sMarca,
                                    'val_smodelo'=>$articulo->sModelo,
                                    'val_sobservaciones'=>$articulo->sObservaciones,
                                    'val_sestado'=>$articulo->sEstado,
                                    'bActivo'=>$articulo->bActivo,
                                    'bComponente'=>$articulo->bComponente, 
                                    'nIdModoAdquisicion'=>$articulo->nModoAdquisicion,
                                    'val_dfechaadquisicion'=>$articulo->dFechaAdquisicion,
                                    'nIdTipoArticulo'=>$articulo->nIdTipoArticulo,
                                    'nIdPersonal'=>$articulo->nIdPersonal,
                                    'nIdProveedor'=>$articulo->nIdProveedor,
                                    'val_sfactura'=>$articulo->sFactura,
                                    'val_ntotalfactura'=>$articulo->nTotalFactura,
                                    'val_ncostounitario'=>$articulo->nCostoUnitario
                        );
                        $controls=fill_controls($articulo);
                        return_view(VIEW_EDIT_ARTICULO,$data,$controls);
                    }
                    
                }else{/*de otro modo*/
                     $data=array('mensaje'=>$articulo->msj);
                     $controls=  fill_controls();
                     return_view(VIEW_SET_ARTICULO,$data,$controls);
                }
            }
            else{
                header('Location: /STControlEquipo/usuario/log/?logout=logout');
            }
            break;
        case VIEW_EDIT_ARTICULO:
             TAG_VIEW_EDIT_ARTICULO:
            $articulo->get($submit_data['nIdArticulo']);
                    $data=array('nIdArticulo'=>$articulo->nIdArticulo,
                                    'val_sidcontabilidad'=>$articulo->sIdContabilidad,
                                    'val_sidcontraloria'=>$articulo->sIdContraloria,
                                    'val_snumeroserie'=>$articulo->sNumeroSerie,
                                    'val_sdescripcion'=>$articulo->sDescripcion,
                                    'val_smarca'=>$articulo->sMarca,
                                    'val_smodelo'=>$articulo->sModelo,
                                    'val_sobservaciones'=>$articulo->sObservaciones,
                                    'val_sestado'=>$articulo->sEstado,
                                    'bActivo'=>$articulo->bActivo,
                                    'bComponente'=>$articulo->bComponente, 
                                    'nIdModoAdquisicion'=>$articulo->nModoAdquisicion,
                                    'val_dfechaadquisicion'=>$articulo->dFechaAdquisicion,
                                    'nIdTipoArticulo'=>$articulo->nIdTipoArticulo,
                                    'nIdPersonal'=>$articulo->nIdPersonal,
                                    'nIdProveedor'=>$articulo->nIdProveedor,
                                    'val_sfactura'=>$articulo->sFactura,
                                    'val_ntotalfactura'=>$articulo->nTotalFactura,
                                    'val_ncostounitario'=>$articulo->nCostoUnitario,
                                    'sImages'=>$articulo->simages
                        );
                    $controls=fill_controls($articulo);
                    return_view(VIEW_EDIT_ARTICULO,$data,$controls);
        break;
        case EDIT_ARTICULO:
            if(isset($submit_data['submit_guardar'])){
                $articulo->edit($submit_data);
                goto TAG_VIEW_EDIT_ARTICULO;
            }
            if(isset($submit_data['submit_agregar'])){
                goto TAG_GET_ARTICULO_ADD;
            }
        break;
        case ADD_COMPONENT:
            if(array_key_exists('nIdArticulo', $submit_data)&& array_key_exists('nIdComponente', $submit_data)){
                
                if(array_key_exists('submit_agregar', $submit_data) and !(array_key_exists('submit_remover_comp',$submit_data))){
                    $articulo->setrelation($submit_data['nIdArticulo'],$submit_data['nIdComponente']);
                    $articulo->get($submit_data['nIdArticulo']);
                    $asociados=$articulo->getasoccomponents($submit_data['nIdArticulo']);
                    $disponibles=$articulo->getcomponents();
                    $data=array('resultset'=>array('resultset'=>$disponibles,'resultset1'=>$asociados),
                            'data'=>array('mensaje'=>$articulo->msj,
                                           'nIdArticulo'=>$articulo->nIdArticulo,
                                              'sDescripcion'=>$articulo->sDescripcion));
                }
                if(array_key_exists('submit_remover_comp',$submit_data)){
                    
                    $articulo->unsetrelation($submit_data['nIdArticulo'],$submit_data['nIdComponente']);
                    $articulo->get($submit_data['nIdArticulo']);
                    $asociados=$articulo->getasoccomponents($submit_data['nIdArticulo']);
                    $disponibles=$articulo->getcomponents();
                    $data=array('resultset'=>array('resultset'=>$disponibles,'resultset1'=>$asociados),
                            'data'=>array('mensaje'=>$articulo->msj,
                                          'nIdArticulo'=>$articulo->nIdArticulo,
                                          'sDescripcion'=>$articulo->sDescripcion));
                }
                return_view(VIEW_ADD_COMPONENT,$data);
            }
            else{
            }
            break;
        default:
            break;
    }
}

function set_obj(){
    $obj=new Articulo();
    return $obj;
}
function fill_controls($articulo=''){
    if($articulo=='')
    $controls=array('drop_nidmodoadquisicion'=>  fill_catalog('adquisicion'),
                     'drop_nidtipoarticulo'=>  fill_catalog('tipoarticulo'),
                     'drop_niddepartamento'=>  fill_catalog('departamento'),
                     'drop_nidpersonal'=>  fill_catalog('personal'),
                     'drop_nidproveedor'=>  fill_catalog('proveedor'));
    else
    $controls=array('drop_nidmodoadquisicion'=>  fill_catalog('adquisicion',$articulo->nModoAdquisicion),
                     'drop_nidtipoarticulo'=>  fill_catalog('tipoarticulo',$articulo->nIdTipoArticulo),
                     'drop_niddepartamento'=>  fill_catalog('departamento',$articulo->nIdDepto),
                     'drop_nidpersonal'=>  fill_catalog('personal',$articulo->nIdPersonal),
                     'drop_nidproveedor'=>  fill_catalog('proveedor',$articulo->nIdProveedor));
    return $controls;
}
function fill_catalog($catalogo='',$param=''){
    $result=array();
    switch ($catalogo) {
        case 'adquisicion':
            $obj=new Adquisicion();
            if($param=='')
            $result=$obj->getmodosadq();
            else
            $result=$obj->getmodosadq($param);
        break;
    case 'tipoarticulo':
            $obj=new Tipoarticulo();
            if($param=='')
            $result=$obj->gettipos();
            else
            $result=$obj->gettipos($param);
        break;
        case 'departamento':
            $obj=new Departamento();
            if($param=='')
            $result=$obj->getdeptos();
            else
            $result=$obj->getdeptos($param);
        break;
        case 'personal':
            $obj=new Personal();
            if($param=='')
            $result=$obj->getpersonal();
            else
            $result=$obj->getpersonal($param);
        break;
        case 'proveedor':
            $obj=new Proveedor();
            if($param=='')
            $result=$obj->getproveedores();
            else
            $result=$obj->getproveedores($param);    
        break;
        default:
            break;
    }
    return $result;
}

#obtiene los datos externos
function helper_articulo_data(){
    $helper_data=array();
    #default values
    #
    #default values
    if($_POST){
        if(array_key_exists('tbx_sidcontabilidad',$_POST)){
            $helper_data['sIdContabilidad']=$_POST['tbx_sidcontabilidad'];
        }
        if(array_key_exists('tbx_sidcontraloria',$_POST)){
            $helper_data['sIdContraloria']=$_POST['tbx_sidcontraloria'];
        }
        if(array_key_exists('tbx_snumeroserie',$_POST)){
            $helper_data['sNumeroSerie']=$_POST['tbx_snumeroserie'];
        }
        if(array_key_exists('tbx_sdescripcion',$_POST)){
            $helper_data['sDescripcion']=mb_strtoupper($_POST['tbx_sdescripcion']);
        }
        if(array_key_exists('tbx_smarca',$_POST)){
            $helper_data['sMarca']=mb_strtoupper($_POST['tbx_smarca']);
        }
        if(array_key_exists('tbx_smodelo',$_POST)){
            $helper_data['sModelo']=mb_strtoupper($_POST['tbx_smodelo']);
        }
        if(array_key_exists('tbx_sobservaciones',$_POST)){
            $helper_data['sObservaciones']=mb_strtoupper($_POST['tbx_sobservaciones']);
        }
        if(array_key_exists('tbx_sestado',$_POST)){
            $helper_data['sEstado']=mb_strtoupper($_POST['tbx_sestado']);
        }
        if(isset($_POST['chbx_bactivo'])){
            $helper_data['bActivo']=1;
        }
        else $helper_data['bActivo']=0;
        
        if(isset($_POST['chbx_bcomponente'])){
            $helper_data['bComponente']=1;
        }
        else $helper_data['bComponente']=0;
        
        if(array_key_exists('drop_nidmodoadquisicion',$_POST)){
            $helper_data['nModoAdquisicion']=$_POST['drop_nidmodoadquisicion'];
        }
        
        if(array_key_exists('tbx_dfechaadquisicion',$_POST)){
            $helper_data['dFechaAdquisicion']=$_POST['tbx_dfechaadquisicion'];
        }
        
        if(array_key_exists('drop_nidtipoarticulo',$_POST)){
            $helper_data['nIdTipoArticulo']=$_POST['drop_nidtipoarticulo'];
        }
        if(array_key_exists('drop_niddepartamento',$_POST)){
            $helper_data['nIdDepto']=$_POST['drop_niddepartamento'];
        }
        if(array_key_exists('drop_nidpersonal',$_POST)){
            $helper_data['nIdPersonal']=$_POST['drop_nidpersonal'];
        }
        if(array_key_exists('drop_nidproveedor',$_POST)){
            $helper_data['nIdProveedor']=$_POST['drop_nidproveedor'];
        }
        if(array_key_exists('tbx_sfactura',$_POST)){
            $helper_data['sFactura']=$_POST['tbx_sfactura'];
        }
        if(array_key_exists('tbx_ntotalfactura',$_POST)){
            $helper_data['nTotalFactura']=$_POST['tbx_ntotalfactura'];
        }
        if(array_key_exists('tbx_ncostounitario',$_POST)){
            $helper_data['nCostoUnitario']=$_POST['tbx_ncostounitario'];
        }
        if(array_key_exists('submit_editar',$_POST)){
            $helper_data['submit_editar']=TRUE;
        }
        if(array_key_exists('submit_reporte',$_POST)){
            $helper_data['submit_reporte']=TRUE;
        }
        if(array_key_exists('submit_agregar',$_POST)){
            $helper_data['submit_agregar']=TRUE;
        }
        if(array_key_exists('rad_nidarticulo',$_POST)){
            $helper_data['nIdArticulo']=$_POST['rad_nidarticulo'];
        }
        if(array_key_exists('tbx_nidarticulo', $_POST)){
            $helper_data['nIdArticulo']=$_POST['tbx_nidarticulo'];
        }
        if(array_key_exists('rad_nidcomponente', $_POST)){
            $helper_data['nIdComponente']=$_POST['rad_nidcomponente'];
        }
        if(array_key_exists('submit_remover_comp', $_POST)){
            $helper_data['submit_remover_comp']=TRUE;
        }
        if(array_key_exists('submit_guardar',$_POST)){
            $helper_data['submit_guardar']=TRUE;
        }
        
        //-----------------carga de archivos---------------------------------
        if(array_key_exists('imagen',$_FILES)){
            define ('SITE_ROOT', str_replace('articulo','site_media',realpath(dirname(__FILE__))));
            $valid_formats = array("jpg", "png", "gif", "zip", "bmp");
            $max_file_size = 1024*100; //100 kb
            $path = SITE_ROOT."\\img\\articulos\\".$helper_data['nIdArticulo']."PHOTOS\\"; // Upload directory
            $count = 0;
            
            // Loop $_FILES to exeicute all files
            foreach ($_FILES['imagen']['name'] as $f => $name) {     
	    if ($_FILES['imagen']['error'][$f] == 4) {
	        continue; // Skip file if any error found
	    }	       
	    if ($_FILES['imagen']['error'][$f] == 0) {	           
	        if ($_FILES['imagen']['size'][$f] > $max_file_size) {
	            $message[] = "$name is too large!.";
	            continue; // Skip large files
	        }
                elseif( ! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats) ){
                    $message[] = "$name is not a valid format";
                    continue; // Skip invalid file formats
		}
	        else{ // No error found! Move uploaded files
                    if(!file_exists($path))mkdir ($path);
                    $newpathimg=$path.$count.".".pathinfo($name, PATHINFO_EXTENSION);
                    if(file_exists($newpathimg))
                        rename($newpathimg, pathinfo($newpathimg, PATHINFO_DIRNAME)."\\H$count".date("Ymd-His").".".pathinfo($name, PATHINFO_EXTENSION));
   
	            if(move_uploaded_file($_FILES["imagen"]["tmp_name"][$f],$newpathimg))
	            $count++; // Number of successfully uploaded file
	        }
	    }
	}
        
        }
        //-----------------fin carga archivos-------------------
    
    }//if($_post)
    
    if($_GET){
    }
    return $helper_data;
}
handler();
?>